package com.keepers.repair.webservice

import com.keepers.repair.model.XmlRootModel
import io.reactivex.Observable
import okhttp3.ResponseBody
import retrofit2.adapter.rxjava2.Result
import retrofit2.http.*

interface ChatService {

    /**
     * 获取聊天记录
     *
     * @param groupID    用户组 ID
     * @param UserID     用户 ID
     * @param count      获取聊天记录的数量
     * @param chattingID 获取聊天记录的起始 ID
     * @param state      获取聊天记录的方向
     * @return 聊天记录列表
     */
    @GET(value = "GetChattingRecords")
    fun getChatRecords(
        @Query(value = "groupID") groupID: String,
        @Query(value = "UserID") UserID: String,
        @Query(value = "count") count: Int,
        @Query(value = "chattingID") chattingID: Int,
        @Query(value = "state") state: Int
    ): Observable<Result<XmlRootModel>>

    /**
     * 改变语音消息的状态
     *
     * @param GID 消息的 ID
     * @return 行为是否成功
     */
    @GET(value = "VoiceChangeState")
    fun voiceChangeState(
        @Query(value = "GID") GID: String
    ): Observable<Result<XmlRootModel>>

    /**
     * 上传聊天语音
     *
     * @param FileInfor 语音文件流信息
     * @param SaveName  文件保存名
     * @param UserID    用户 ID
     * @param GroupGid  用户组 ID
     * @param WhenLong  语音时长
     */
    @FormUrlEncoded
    @POST(value = "SaveChatVoice")
    fun saveChatVoice(
        @Field(value = "FileInfor") FileInfor: String,
        @Field(value = "SaveName") SaveName: String,
        @Field(value = "UserID") UserID: String,
        @Field(value = "GroupGid") GroupGid: String,
        @Field(value = "WhenLong") WhenLong: Int
    ): Observable<Result<XmlRootModel>>

    /**
     * 下载聊天语音
     *
     * @param url 语音文件地址
     */
    @GET
    fun downloadChatVoice(@Url url: String): Observable<Result<ResponseBody>>
}
